package com.divemotor.ventarepuestosinternet.beans.lazy;

import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import com.divemotor.ventarepuestosinternet.beans.CotizacionConEstadosBusquedaBean;
import com.divemotor.ventarepuestosinternet.beans.adapter.CotizacionAdapter;
import com.divemotor.ventarepuestosinternet.beans.form.CotizacionBeanForm;
import com.divemotor.ventarepuestosinternet.exception.DivemotorBusinessException;
import com.divemotor.ventarepuestosinternet.service.CotizacionService;
import com.divemotor.ventarepuestosinternet.util.Paginacion;

public class CotizacionSupervisorLazy extends LazyDataModel<CotizacionAdapter> {

	private static final long serialVersionUID = 1L;
	public static final Logger logger = Logger.getLogger(CotizacionSupervisorLazy.class);
	
	private List<CotizacionAdapter> listaCotizaciones;
	private CotizacionBeanForm cotizacionBean;
	private CotizacionService cotizacionService;
	private CotizacionConEstadosBusquedaBean cotizacionConEstadosBusqueda;
	Integer nroRegistros;
	
	public CotizacionSupervisorLazy(CotizacionService cotizacionService,
									CotizacionBeanForm cotizacionBean,
									CotizacionConEstadosBusquedaBean cotizacionConEstadosBusquedaBean) {
		
		this.cotizacionService = cotizacionService;
		this.cotizacionBean = cotizacionBean;
		this.cotizacionConEstadosBusqueda = cotizacionConEstadosBusquedaBean;
	}

	@Override
	public List<CotizacionAdapter> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
		try {
			Paginacion paginacion = new Paginacion();
			paginacion.setInicioPagina(first);
			paginacion.setFinPagina(pageSize);
			paginacion.setOrdenarLabel(sortField);
			paginacion.setDireccionOrden(sortOrder.toString());
			
			listaCotizaciones = cotizacionService.buscarAdapter(paginacion, cotizacionBean);
			nroRegistros = cotizacionService.cantidadCotizaciones(cotizacionBean);
			setRowCount(nroRegistros);
			
			cotizacionConEstadosBusqueda.setColumnaOrden(sortField);
			cotizacionConEstadosBusqueda.setOrden(sortOrder.toString());
			
		} catch (DivemotorBusinessException e) {
			logger.error("EX* CotizacionSupervisorLazy: " + e.getMessage());
		}
		return listaCotizaciones;
	}
	
	@Override
	public void setRowIndex( int rowIndex ){
	   if ( rowIndex == -1 || getPageSize() == 0 ){
		   super.setRowIndex( -1 );
	   }else{
		   super.setRowIndex( rowIndex % getPageSize() );
	   }
	}

	public Integer getNroRegistros() {
		return nroRegistros;
	}

	public void setNroRegistros(Integer nroRegistros) {
		this.nroRegistros = nroRegistros;
	}

	
	
}
